package org.dromara.datacheck.service.jst;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.datacheck.domain.bo.JstAndJDTableDataEntryBo;
import org.dromara.datacheck.domain.bo.jst.JstSaleOutWarehouseOrderBo;
import org.dromara.datacheck.domain.jst.JstSaleOutWarehouseOrder;
import org.dromara.datacheck.domain.jstandjddiff.JstAndJDDiffDataEntryBo;
import org.dromara.datacheck.domain.vo.jst.JstSaleOutWarehouseOrderVo;

import java.text.ParseException;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 聚水潭-销售出库单Service接口
 *
 * @author 刘武贵
 * @date 2024-09-08
 */
public interface IJstSaleOutWarehouseOrderService {

    /**
     * 查询聚水潭-销售出库单
     *
     * @param id 主键
     * @return 聚水潭-销售出库单
     */
    JstSaleOutWarehouseOrderVo queryById(Long id);

    /**
     * 分页查询聚水潭-销售出库单列表
     *
     * @param bo        查询条件
     * @param pageQuery 分页参数
     * @return 聚水潭-销售出库单分页列表
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageList(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 查询符合条件的聚水潭-销售出库单列表
     *
     * @param bo 查询条件
     * @return 聚水潭-销售出库单列表
     */
    List<JstSaleOutWarehouseOrderVo> queryList(JstSaleOutWarehouseOrderBo bo);

    /**
     * 查询符合条件的聚水潭-销售出库单列表
     *
     * @param bo 查询条件
     * @return 聚水潭-销售出库单列表
     */
    List<JstSaleOutWarehouseOrderVo> queryListNew(JstSaleOutWarehouseOrderBo bo);

    /**
     * 新增聚水潭-销售出库单
     *
     * @param bo 聚水潭-销售出库单
     * @return 是否新增成功
     */
    Boolean insertByBo(JstSaleOutWarehouseOrderBo bo);

    /**
     * 修改聚水潭-销售出库单
     *
     * @param bo 聚水潭-销售出库单
     * @return 是否修改成功
     */
    Boolean updateByBo(JstSaleOutWarehouseOrderBo bo);

    /**
     * 校验并批量删除聚水潭-销售出库单信息
     *
     * @param ids     待删除的主键集合
     * @param isValid 是否进行有效性校验
     * @return 是否删除成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 查询聚水潭-销售出库单列表所有数据
     *
     * @return 聚水潭-销售出库单列表
     */
    List<JstSaleOutWarehouseOrder> queryAll();

    /**
     * 清空聚水潭-销售出库单列表所有数据
     *
     * @return 聚水潭-销售出库单列表
     */
    Integer deleteAll();

    /**
     * 查询聚水潭-销售出库单列表
     * 场景分类：寄售-寄售调拨（猫超，进口猫超，京东自营）
     * 业务查询条件：根据shop_name店铺名称为国内货代仓店铺（分销指定）、京东-TYMO京东自营店、天猫-TYMO天猫超市、天猫-TYMO天猫进口超市、,国内零星分销查询
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopName1(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 查询聚水潭-销售出库单列表
     * 场景分类：寄售-寄寄售换货-发货(猫超售后店铺，进口猫超售后店铺)
     * 业务查询条件：根据shop_name店铺名称为天猫超市-售后店铺、天猫进口超市-售后店铺查询
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopName2(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 查询聚水潭-销售出库单列表
     * 场景分类：分销（山姆）销售-销售
     * 业务查询条件：根据shop_name店铺名称为国内山姆查询
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopName3(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 查询聚水潭-销售出库单列表
     * 场景分类：部门领料-网红达人店
     * 业务查询条件：根据shop_name店铺名称为网红达人店铺查询
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopName4(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 查询聚水潭-销售出库单列表
     * 场景分类：部门领料-展销店铺店发货
     * 业务查询条件：根据shop_name店铺名称为展销样品店铺查询
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopName5(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 查询聚水潭-销售出库单列表
     * 场景分类：部门领料-办公店铺
     * 业务查询条件：根据shop_name店铺名称为办公室店铺查询
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopName6(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 查询聚水潭-销售出库单列表
     * 场景分类：部门领料-研发店铺
     * 业务查询条件：根据shop_name店铺名称为研发店铺查询
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopName7(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 查询聚水潭-销售出库单列表
     * 场景分类：海外出口-海外出口（东莞仓)
     * 业务查询条件：根据shop_name店铺名称为海外备货店铺查询
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopName8(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 查询聚水潭-销售出库单列表
     * 场景分类：2C销售-销售发货
     * 业务查询条件：根据shop_name店铺名称为除了
     * 国内货代仓店铺（分销指定）、京东-TYMO京东自营店、天猫-TYMO天猫超市、天猫-TYMO天猫进口超市
     * 国内山姆、网红达人店铺、展销样品店铺、办公室店铺、研发店铺、海外备货店铺
     * 天猫超市-售后店铺、天猫进口超市-售后店铺
     * 的所有店铺查询
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopName9(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 查询聚水潭-销售出库单列表
     * 按日期汇总的统计数据（测试接口1）
     */
    TableDataInfo<Map<String, Object>> jstAndJdSumTest1() throws ParseException;

    /**
     * 查询聚水潭-销售出库单列表
     * 按日期汇总的统计数据（测试接口2）
     */
    TableDataInfo<JstAndJDTableDataEntryBo> jstAndJdSumTest2() throws ParseException;

    /**
     * 查询聚水潭-销售出库单列表的差异接口
     * 场景分类：2C销售-销售发货
     * 业务查询条件：根据shop_name店铺名称为除了
     * 国内货代仓店铺（分销指定）、京东-TYMO京东自营店、天猫-TYMO天猫超市、天猫-TYMO天猫进口超市、国内零星分销
     * 国内山姆、网红达人店铺、展销样品店铺、办公室店铺、研发店铺、海外备货店铺
     * 天猫超市-售后店铺、天猫进口超市-售后店铺
     * 的所有店铺查询
     */
    TableDataInfo<JstAndJDDiffDataEntryBo> jstAndJd2cDiff();

    /**
     * 查询聚水潭-销售出库单列表以及金蝶-直接调拨单（东莞仓->在途）数据汇总（按日期汇总）-2C销售-销售发货
     */
    TableDataInfo<JstAndJDTableDataEntryBo> jstAndJdSumByDateBySaleDelivery();

    /**
     * 查询聚水潭-销售出库单列表以及金蝶-直接调拨单（东莞仓->寄售仓）数据汇总（按日期汇总）-寄售调拨（猫超，进口猫超，京东自营）
     */
    TableDataInfo<JstAndJDTableDataEntryBo> jstAndJdSumByDateByConsignmentAllot();

    /**
     * 查询聚水潭-销售出库单列表以及金蝶-直接调拨单（东莞仓->寄售仓）数据汇总（按日期汇总）
     * 场景分类：3、寄售-寄售换货-发货(猫超售后店铺，进口猫超售后店铺)
     */
    TableDataInfo<JstAndJDTableDataEntryBo> jstAndJdSumByDateByConsignmentAllotExchangeGoods();

    /**
     * 查询聚水潭-销售出库单列表以及金蝶-直接调拨单（东莞仓->寄售仓）数据汇总（按日期汇总）
     * 场景分类：4、分销（山姆）销售-销售
     */
    TableDataInfo<JstAndJDTableDataEntryBo> jstAndJdSumByDateByDistributionShanMu();

    /**
     * 查询聚水潭-销售出库单列表以及金蝶-其他出库单数据汇总（按日期汇总）
     * 场景分类：5、部门领料-网红达人店
     */
    TableDataInfo<JstAndJDTableDataEntryBo> jstAndJdSumByDateByDeptGetMaterial1();

    /**
     * 查询聚水潭-销售出库单列表以及金蝶-其他出库单数据汇总（按日期汇总）
     * 场景分类：5、部门领料-展销店铺店发货
     */
    TableDataInfo<JstAndJDTableDataEntryBo> jstAndJdSumByDateByDeptGetMaterial2();

    /**
     * 查询聚水潭-销售出库单列表以及金蝶-其他出库单数据汇总（按日期汇总）
     * 场景分类：5、部门领料-办公店铺
     */
    TableDataInfo<JstAndJDTableDataEntryBo> jstAndJdSumByDateByDeptGetMaterial3();

    /**
     * 查询聚水潭-销售出库单列表以及金蝶-其他出库单数据汇总（按日期汇总）
     * 场景分类：5、部门领料-研发店铺
     */
    TableDataInfo<JstAndJDTableDataEntryBo> jstAndJdSumByDateByDeptGetMaterial4();

    /**
     * 查询聚水潭-销售出库单列表以及金蝶-直接调拨单(东莞仓->待报关在途仓）汇总（按日期汇总）
     * 场景分类：9、海外出口-海外出口（东莞仓)
     */
    TableDataInfo<JstAndJDTableDataEntryBo> jstAndJdSumByDateByOverSeasExport();

    /**
     * 查询聚水潭-销售出库单列表（金蝶缺少的数据）
     * 场景分类：3、寄售-寄售调拨（猫超，进口猫超，京东自营）
     * 业务查询条件：根据shop_name店铺名称为国内货代仓店铺（分销指定）、京东-TYMO京东自营店、天猫-TYMO天猫超市、天猫-TYMO天猫进口超市、零星分销店铺查询
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopNameByJdDeficiency1(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);


    /**
     * 查询符合条件的聚水潭-销售出库单列表（3、寄售-寄售调拨（猫超，进口猫超，京东自营）的差异数据）
     *
     * @param bo 查询条件
     * @return 聚水潭-销售出库单列表
     */
    List<JstSaleOutWarehouseOrderVo> queryListConsignmentBusinessDifference1(JstSaleOutWarehouseOrderBo bo);

    /**
     * 查询聚水潭-销售出库单列表（金蝶缺少的数据）
     * 场景分类：3、寄售-寄售换货-发货(猫超售后店铺，进口猫超售后店铺)
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopNameByJdDeficiency2(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 导出聚水潭-销售出库单列表（导出3、寄售-寄售换货-发货(猫超售后店铺，进口猫超售后店铺)的差异数据）
     */
    List<JstSaleOutWarehouseOrderVo> queryListConsignmentBusinessDifference2(JstSaleOutWarehouseOrderBo bo);

    /**
     * 查询聚水潭-销售出库单列表（金蝶缺少的数据）
     * 场景分类：4、分销（山姆）销售-销售
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopNameByJdDeficiency3(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 导出聚水潭-销售出库单列表（导出4、分销（山姆）销售-销售的差异数据）
     */
    List<JstSaleOutWarehouseOrderVo> queryListConsignmentBusinessDifference3(JstSaleOutWarehouseOrderBo bo);

    /**
     * 查询聚水潭-销售出库单列表（金蝶缺少的数据）
     * 场景分类：5、部门领料-网红达人店
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopNameByJdDeficiency4(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 导出聚水潭-销售出库单列表（导出5、部门领料-网红达人店的差异数据）
     */
    List<JstSaleOutWarehouseOrderVo> queryListConsignmentBusinessDifference4(JstSaleOutWarehouseOrderBo bo);

    /**
     * 查询聚水潭-销售出库单列表（金蝶缺少的数据）
     * 场景分类：5、部门领料-展销店铺店发货
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopNameByJdDeficiency5(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 导出聚水潭-销售出库单列表（导出5、部门领料-展销店铺店发货的差异数据）
     */
    List<JstSaleOutWarehouseOrderVo> queryListConsignmentBusinessDifference5(JstSaleOutWarehouseOrderBo bo);

    /**
     * 查询聚水潭-销售出库单列表（金蝶缺少的数据）
     * 场景分类：5、部门领料-办公店铺店发货
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopNameByJdDeficiency6(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 导出聚水潭-销售出库单列表（导出5、部门领料-办公店铺店发货的差异数据）
     */
    List<JstSaleOutWarehouseOrderVo> queryListConsignmentBusinessDifference6(JstSaleOutWarehouseOrderBo bo);

    /**
     * 查询聚水潭-销售出库单列表（金蝶缺少的数据）
     * 场景分类：5、部门领料-研发店铺发货
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopNameByJdDeficiency7(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);

    /**
     * 导出聚水潭-销售出库单列表（导出5、部门领料-研发店铺的差异数据）
     */
    List<JstSaleOutWarehouseOrderVo> queryListConsignmentBusinessDifference7(JstSaleOutWarehouseOrderBo bo);

    /**
     * 查询聚水潭-销售出库单列表（金蝶缺少的数据）
     * 场景分类：9、海外出口-海外出口（东莞仓)
     */
    TableDataInfo<JstSaleOutWarehouseOrderVo> queryPageListByShopNameByJdDeficiency8(JstSaleOutWarehouseOrderBo bo, PageQuery pageQuery);


    /**
     * 导出聚水潭-销售出库单列表（导出9、海外出口-海外出口（东莞仓)的差异数据）
     */
    List<JstSaleOutWarehouseOrderVo> queryListConsignmentBusinessDifference8(JstSaleOutWarehouseOrderBo bo);
}
